/**
 * Session
 */
Fw.app.Session = function(){
    //
    var CURRENT_SESSION_KEY = '_CURRENT_SESSION';
    var CURRENT_SESSION = Fw.util.Storage.get(CURRENT_SESSION_KEY);
    if(CURRENT_SESSION){
        CURRENT_SESSION = Fw.decode(CURRENT_SESSION);
    }
    //
    return {
        /**
         * 返回登录账号
         */
        getAccount: function(){
            return this.get('account');
        },
        /**
         * 返回客户号
         */
        getCustNo: function(){
            return this.get('custNo');
        },
        /**
         * 返回客户信息
         */
        getCustInfo: function(key){
            var custInfo = this.get('custInfo');
            return key ? (custInfo ? custInfo[key] || null : null) : custInfo;
        },
        /**
         * 返回客户端App版本号
         */
        getVersion: function(){
            return this.get('version');
        },
        /**
         * 返回客户端设备类型
         */
        getPlatform: function(){
            return this.get('ostype');
        },
        /**
         * 刷新会话信息
         */
        refresh: function(){
            CURRENT_SESSION = null;
            Fw.util.Storage.remove(CURRENT_SESSION_KEY);
        },
        /**
         * 获取Session信息（同步）
         * private
         */
        get: function(key, flag){
            if(CURRENT_SESSION){
                return key ? CURRENT_SESSION[key] || null : CURRENT_SESSION;
            } 
            else {
                if(flag === true){
                    //Fw.device.Device.alertinfo('获取会话信息失败！');
                    return null;
                } 
                else {
                    Fw.util.Ajax.get({
                        service: 'loginService',
                        method: 'getCurrentSession',
                        async: false,
                        //请求成功后回调
                        success: function(data, result) {
                            CURRENT_SESSION = data;
                            Fw.util.Storage.set(CURRENT_SESSION_KEY, Fw.encode(CURRENT_SESSION));
                        }
                    });
                    return this.get(key, true);
                }
            }
        }
    };
}();
